/*
* @Author: Josh
* @Date:   2019-01-26 11:12:55
* @Last Modified by:   Administrator
* @Last Modified time: 2019-04-14 14:10:48
*/

'use strict';

require('./index.css');
require('page/common/nav-simple/index.js');
var _mall = require('util/mall.js'),
    _user = require('service/user-service.js');

//表单里的错误提示
var formError = {
    show : function(errMsg){
        $('.error-item').show().find('.err-msg').text(errMsg);
    },
    hide : function(){
        $('.error-item').hide().find('.err-msg').text('');
    }
};

//page 逻辑部分
var page = {
    data : {
        username : '',
        question : '',
        answer   : '',
        token    : '',
    },
    init : function(){
        this.onLoad();
        this.bindEvent();
    },
    onLoad  : function(){
        this.loadStepUsername();
    },
    bindEvent : function(){
        var _this = this;
        //用户名输入按钮点击事件
        $('#submit-username').click(function(){
            _this.submitUsername(_this);
        });
        //键盘回车输入事件
        $('#username').keyup(function(e){
            //keyCode为回车键
            if(e.keyCode === 13){
                _this.submitUsername(_this);
            }
        });


        //输入密码提示问题答案按钮点击
        $('#submit-question').click(function(){
            _this.submitQuestion(_this);
        });
        //键盘回车输入事件
        $('#answer').keyup(function(e){
            //keyCode为回车键
            if(e.keyCode === 13){
                _this.submitQuestion(_this);
            }
        });


        //输入新密码按钮点击
        $('#submit-password').click(function(){
            _this.submitPassword(_this);
        });
        //键盘回车输入事件
        $('#password-confirm').keyup(function(e){
            //keyCode为回车键
            if(e.keyCode === 13){
                //触发输入密码提示问题答案按钮点击
                _this.submitPassword(_this);
            }
        });
    },
    //用户名输入按钮点击事件
    submitUsername : function(_this){
        //取得用户名
        var username = $.trim($('#username').val());
        if(username){
            //调用接口验证用户名
            _user.getQuestion(username, function(res){
                //将接收到的用户名及问题记录到对象中
                _this.data.username = username;
                _this.data.question = res;
                //进入下一步
                _this.loadStepQuestion();
            }, function(errMsg){
                formError.show(errMsg);
            });
        }
        else{
            formError.show('请输入用户名');
        }
    },
    //输入密码提示问题答案按钮点击
    submitQuestion : function(_this){
        //取得问题答案
        var answer = $.trim($('#answer').val());
        //问题答案有输入
        if(answer){
            //检查答案
            _user.checkAnswer({
                username : _this.data.username,
                question : _this.data.question,
                answer   : answer
            }, function(res){
                //将接收到的问题答案及token记录到对象中
                _this.data.answer = answer;
                _this.data.token  = res;
                //进入下一步
                _this.loadStepPassword();
            }, function(errMsg){
                formError.show(errMsg);
            });
        }
        else{
            formError.show('请输入答案');
        }
    },
    //输入新密码按钮点击
    submitPassword : function(_this){
        var password        = $.trim($('#password').val()),
            passwordConfirm = $.trim($('#password-confirm').val()),
            result = _this.checkNewPassword(password, passwordConfirm);
        if(result.status){
            _user.resetPaword({
                username      : _this.data.username,
                passwordNew   : password,
                forgetToken   : _this.data.token
            }, function(res){
                window.location.href = './result.html?type=pass-reset';
            }, function(errMsg){
                formError.show(errMsg);
            });
        }
        //验证不通过
        else{
            formError.show(result.msg);
        }
    },
    //加载输入用户名
    loadStepUsername : function(){
        $('.step-username').show();
    },
    //加载输入答案
    loadStepQuestion : function(){
        //隐藏错误提示
        formError.hide();
        
        //做容器的切换
        //隐藏第一个容器的按钮
        $('#submit-username').hide();
        //用户名文本框不可编辑
        $("#username").attr("disabled","disabled");
        //显示答案容器
        $('.step-question').show().find('#question').val('密码找回问题是：' + this.data.question);
    },
    //加载输入新密码
    loadStepPassword : function(){
         //隐藏错误提示
        formError.hide();
        
        //做容器的切换
        //隐藏上个容器的按钮
        $('#submit-question').hide();
        //用户名文本框不可编辑
        $("#answer").attr("disabled","disabled");
        //显示答案容器
        $('.step-password').show();
    },
    //密码输入的验证
    checkNewPassword : function(password, passwordConfirm){
        var result = {
            status : false,
            msg    : '',
        };
        if(!_mall.validate(password, 'require')){
            result.msg = '请输入密码！';
        }
        //验证密码长度
        else if(password.length < 6){
            result.msg = '密码长度不能少于6位！';
        }
        //验证确认密码是否正确
        else if(password !== passwordConfirm){
            result.msg = '两次输入的密码不一致！';
        }
        else{
            //通过验证，返回正确提示
            result.status = true;
        }

        return result;
    }
};

$(function(){
    page.init(); 
});